package com.sugon.modules.sys.service;

import com.cait.service.rescenter.ResultMessage;
import com.cait.service.rescenter.UserInfo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 长安统一认证中心认证器
 *
 * @author ： YuXD
 * @date ： 2022-08-19
 * @version: 1.0
 */
public interface IResCenterAuthenticator {

    /**
     * 根据用户名和密码去统一资源认证中心进行认证，
     * 如果成功则保存令牌到当前会话中并返回true
     * 否则返回false
     *
     * @param username 用户名
     * @param password 密码
     * @return
     */
    ResultMessage doResCenterAuthenticate(String username, String password);

    /**
     * 根据用户token获取用户信息
     *
     * @param identityToken
     * @return
     */
    UserInfo getUserByToken(String identityToken);

    /**
     * 校验登录令牌是否有效
     *
     * @param identityToken 登录令牌
     * @return
     */
    boolean checkIdentityToken(String identityToken);

    /**
     * 校验登录令牌是否有效
     *
     * @param request  请求对象
     * @param response 响应对象
     * @return
     */
    boolean checkIdentityToken(HttpServletRequest request, HttpServletResponse response);

    /**
     * 获取登录令牌
     *
     * @param request  请求对象
     * @param response 响应对象
     * @return
     */
    String getIdentityToken(HttpServletRequest request, HttpServletResponse response);

    /**
     * 生成认证代理地址
     *
     * @param redirecturl
     * @return
     */
    String getLoginAgentUrlByRedrect(String redirecturl);

}
